Flag 是下一关的邮箱地址(以 DD 开头)。
文件下载hello
将文件导入ida,如下图
进入
1 |
|
int sub_100000CE0()
{
int result; // eax
signed int v1; // [rsp+1Ch] [rbp-14h]
int v2; // [rsp+24h] [rbp-Ch]
v2 = ((unsigned __int64)((char *)start - (char *)sub_100000C90) >> 2) ^ byte_100001040[0];
result = sub_100000DE0();
if ( !(result & 1) )
{
v1 = 0;
while ( v1 < 55 )
{
byte_100001040[v1] -= 2;
byte_100001040[v1] ^= v2;
++v1;
++v2;
}
result = printf("\nFinal output is %s\n", &byte_100001040[1]);
}
return result;
}
1 | # 其实输出的就是FLAG了 |
s = “\x41\x10\x11\x11\x1B\x0A\x64\x67\x6A\x68\x62\x68\x6E\x67\x68\x6B\x62\x3D\x65\x6A\x6A\x3D\x68\x04\x05\x08\x03\x02\x02\x55\x08\x5D\x61\x55\x0A\x5F\x0D\x5D\x61\x32\x17\x1D\x19\x1F\x18\x20\x04\x02\x12\x16\x1E\x54\x20\x13\x14\x00\x00”
v2 = ((0x100000CB0 - 0x100000C90)>>2) ^ 0x41
for i in range(0,55):
print chr((ord(s[i])-2)^ v2)
v2+=1
![](3.png)
# 由于要去除第一位,所以FLAG为下面这个字符串
# DDCTF-5943293119a845e9bbdbde5a369c1f50@didichuxing.com